package com.example.test.test;



import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.*;

/**
 *
 1 编译器自动为内部类添加一个成员变量， 这个成员变量的类型和外部类的类型相同， 这个成员变量就是指向外部类对象的引用；

 2 编译器自动为内部类的构造方法添加一个参数， 参数的类型是外部类的类型， 在构造方法内部使用这个参数为1中添加的成员变量赋值；

 3 在调用内部类的构造函数初始化内部类对象时， 会默认传入外部类的引用。
 */
public class TalkClock {

    private int interval;

    private boolean beep;

    public TalkClock(int interval, boolean beep) {
        this.interval = interval;
        this.beep = beep;
    }


    public void start(int i){
        TimePrinter timePrinter = new TimePrinter();


    }



     public class TimePrinter implements ActionListener{

         @Override
         public void actionPerformed(ActionEvent e) {
             System.out.println("At the tone,the time is"+ Instant.ofEpochMilli(e.getWhen()));
             if (beep) Toolkit.getDefaultToolkit().beep();  // 内部类刻意访问外部类的变量
         }
     }
}
